// ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
//==========================================================================
//  File:       IpcChannelHelper.cs 
//  Author:   [....]@Microsoft.Com 
//  Summary:    Implements helper methods for Ipc client and server channels.
// 
//=========================================================================

using System;
using System.IO; 
using System.Collections;
using System.Runtime.Remoting.Channels; 
 
namespace System.Runtime.Remoting.Channels.Ipc
{ 

    internal static class IpcChannelHelper
    {
        private const String _ipc = "ipc://"; 

        // see if the string starts with "ipc://" 
        internal static bool StartsWithIpc(String url) 
        {
            return StringHelper.StartsWithAsciiIgnoreCasePrefixLower(url, _ipc); 
        } // StartsWithIpc

        // Used by Ipc channels to implement IChannel::Parse.
        // It returns the channel uri and places object uri into out parameter. 
        internal static String ParseURL(String url, out String objectURI)
        { 
            if (url == null) 
                throw new ArgumentNullException("url");
 
            // Set the out parameters
            objectURI = null;

            int separator; 

            // Find the starting point of ipc:// 
            // NOTE: We are using this version of String.Compare to ensure 
            // that string operations are case-insensitive!!
            if (StartsWithIpc(url)) 
            {
                separator = _ipc.Length;
            }
            else 
            {
                return null; 
            } 

            // find next slash (after end of scheme) 
            separator = url.IndexOf('/', separator);
            if (-1 == separator)
            {
                return url; // means that the url is just "Ipc://foo" or something like that 
            }
 
            // Extract the channel URI which is the prefix 
            String channelURI = url.Substring(0, separator);
 
            // Extract the object URI which is the suffix
            objectURI = url.Substring(separator); // leave the slash

            return channelURI; 
        } // ParseURL
    } // class IpcChannelHelper 
 

} // namespace System.Runtime.Remoting.Channels.Ipc 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
//==========================================================================
//  File:       IpcChannelHelper.cs 
//  Author:   [....]@Microsoft.Com 
//  Summary:    Implements helper methods for Ipc client and server channels.
// 
//=========================================================================

using System;
using System.IO; 
using System.Collections;
using System.Runtime.Remoting.Channels; 
 
namespace System.Runtime.Remoting.Channels.Ipc
{ 

    internal static class IpcChannelHelper
    {
        private const String _ipc = "ipc://"; 

        // see if the string starts with "ipc://" 
        internal static bool StartsWithIpc(String url) 
        {
            return StringHelper.StartsWithAsciiIgnoreCasePrefixLower(url, _ipc); 
        } // StartsWithIpc

        // Used by Ipc channels to implement IChannel::Parse.
        // It returns the channel uri and places object uri into out parameter. 
        internal static String ParseURL(String url, out String objectURI)
        { 
            if (url == null) 
                throw new ArgumentNullException("url");
 
            // Set the out parameters
            objectURI = null;

            int separator; 

            // Find the starting point of ipc:// 
            // NOTE: We are using this version of String.Compare to ensure 
            // that string operations are case-insensitive!!
            if (StartsWithIpc(url)) 
            {
                separator = _ipc.Length;
            }
            else 
            {
                return null; 
            } 

            // find next slash (after end of scheme) 
            separator = url.IndexOf('/', separator);
            if (-1 == separator)
            {
                return url; // means that the url is just "Ipc://foo" or something like that 
            }
 
            // Extract the channel URI which is the prefix 
            String channelURI = url.Substring(0, separator);
 
            // Extract the object URI which is the suffix
            objectURI = url.Substring(separator); // leave the slash

            return channelURI; 
        } // ParseURL
    } // class IpcChannelHelper 
 

} // namespace System.Runtime.Remoting.Channels.Ipc 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
